// components/confirm-dialog/index.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    // 控制弹窗显示/隐藏
    visible: {
      type: Boolean,
      value: false
    },
    // 弹窗类型：success（成功）| confirm（确认）
    type: {
      type: String,
      value: 'success'
    },
    // 主标题
    title: {
      type: String,
      value: '提交成功'
    },
    // 副标题
    subtitle: {
      type: String,
      value: '副标题副标题副标题'
    },
    // 确认按钮文字（仅 confirm 类型）
    confirmText: {
      type: String,
      value: '确认'
    },
    // 取消按钮文字（仅 confirm 类型）
    cancelText: {
      type: String,
      value: '取消'
    },
    // 自动关闭倒计时时间（秒）
    autoCloseTime: {
      type: Number,
      value: 3
    },
    // 是否显示倒计时提示
    showCountdown: {
      type: Boolean,
      value: true
    },
  },

  /**
   * 组件的初始数据
   */
  data: {
    countdown: 3, // 倒计时数字
    timer: null   // 定时器
  },

  /**
   * 组件的方法列表
   */
  methods: {
    /**
     * 显示弹窗
     */
    show() {
      this.setData({
        visible: true,
        countdown: this.properties.autoCloseTime
      });
      this.startCountdown();
    },

    /**
     * 隐藏弹窗
     */
    hide() {
      this.setData({
        visible: false
      });
      this.clearTimer();
      // 触发关闭事件
      this.triggerEvent('close');
    },

    /**
     * 开始倒计时
     */
    startCountdown() {
      this.clearTimer(); // 先清除之前的定时器
      
      const timer = setInterval(() => {
        const countdown = this.data.countdown - 1;
        this.setData({
          countdown: countdown
        });

        if (countdown <= 0) {
          this.clearTimer();
          this.hide();
        }
      }, 1000);

      this.setData({
        timer: timer
      });
    },

    /**
     * 清除定时器
     */
    clearTimer() {
      if (this.data.timer) {
        clearInterval(this.data.timer);
        this.setData({
          timer: null
        });
      }
    },

    /**
     * 点击背景遮罩关闭弹窗
     */
    onOverlayTap() {
      this.hide();
    },

    /**
     * 阻止弹窗内容区域的点击事件冒泡
     */
    onContentTap() {
      // 阻止事件冒泡，防止点击内容区域关闭弹窗
    },

    /**
     * 确认按钮点击事件
     */
    onConfirm() {
      this.hide();
      // 触发确认事件
      this.triggerEvent('confirm');
    },

    /**
     * 取消按钮点击事件
     */
    onCancel() {
      this.hide();
      // 触发取消事件
      this.triggerEvent('cancel');
    }

  },

  /**
   * 组件生命周期
   */
  lifetimes: {
    detached() {
      // 组件销毁时清除定时器
      this.clearTimer();
    }
  },

  /**
   * 监听属性变化
   */
  observers: {
    'visible': function(visible) {
      if (visible) {
        this.setData({
          countdown: this.properties.autoCloseTime
        });
        // 只有 success 类型才自动关闭
        if (this.properties.type === 'success') {
          this.startCountdown();
        }
      } else {
        this.clearTimer();
      }
    }
  }
})
